﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.ServiceModel.Channels;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.PromocaoWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.EstabelecimentoWS;


namespace PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.GUI
{
    public partial class ListaPromocaodoEstabelecimento : System.Web.UI.Page
    {
        TableHeaderRow linhaDaTabelaPromocaoPorEstabelecimento = new TableHeaderRow();

        TableHeaderCell celulaTituloDaPromocao = new TableHeaderCell();
        Label labelTituloDaPromocao = new Label();

        TableHeaderCell celulaDesricaoDaPromocao = new TableHeaderCell();
        Label labelDescricaoDaPromocao = new Label();

        TableHeaderCell celulaValidadeDaPromocao = new TableHeaderCell();
        Label labelValidadeDaPromocao = new Label();

        TableHeaderCell celulaStatusPromocao = new TableHeaderCell();
        Label labelStatusPromoção = new Label();

        TableHeaderCell celulaAcao = new TableHeaderCell();
        Label labelAcao = new Label();

        ObjetoEstabelecimento estabelecimento;
        PubClub_Estabelecimento_WS webServiceEstabelecimento = new PubClub_Estabelecimento_WS();
        ObjetoPromocao[] listaPromocaoAtivos;
        PubClub_Promocao_WS webServicePromocao = new PubClub_Promocao_WS();
        ObjetoRetornoPromocao retornoWebServiceInativarPromocao;
        BindingList<ObjetoPromocao> listaPromocaoInativa;

        protected void Page_Load(object sender, EventArgs e)
        {

            if (Session["Estabelecimento"] == null)
            {
                Response.Redirect("Login.aspx?Logout=2");
            }
            else
            {
                estabelecimento = webServiceEstabelecimento.GetEstabelecimento(Convert.ToInt32(Session["Estabelecimento"]));
            }

            if (Request.QueryString["InativarPromocao"] != null)
            {

                int idPromocao = Convert.ToInt32(Request.QueryString["InativarPromocao"]);
                retornoWebServiceInativarPromocao = webServicePromocao.InativarPromocao(idPromocao);

                if (retornoWebServiceInativarPromocao.Sucesso == true)
                {

                    Response.Redirect("EstabelecimentoVerMinhasPromocoes.aspx?Sucesso=1");

                }

                else
                {
                    LabelAviso.Text = retornoWebServiceInativarPromocao.Menssagem;
                    LabelAviso.ForeColor = System.Drawing.Color.Red;
                    LabelAviso.Visible = true;
                }

            }

            if (Request.QueryString["AtivarPromocao"] != null)
            {

                int idPromocao = Convert.ToInt32(Request.QueryString["AtivarPromocao"]);
                ObjetoPromocao promocao = webServicePromocao.GetPromocao(idPromocao,false);
                ObjetoRetornoPromocao retornoWebServiceAtivarPromocao = webServicePromocao.UpdatePromocao(promocao.Id, estabelecimento.EstabelecimentoId,
                    promocao.Titulo, promocao.Descricao, promocao.Validade, null, "", "", true);

                if (retornoWebServiceAtivarPromocao.Sucesso == true)
                {

                    Response.Redirect("EstabelecimentoVerMinhasPromocoes.aspx?Sucesso=3");

                }

                else
                {
                    LabelAviso.Text = retornoWebServiceAtivarPromocao.Menssagem;
                    LabelAviso.ForeColor = System.Drawing.Color.Red;
                    LabelAviso.Visible = true;
                }

            }

            if (Request.QueryString["Sucesso"] == "1")
            {
                LabelAviso.Text = "Promoção inativada com sucesso.";
                LabelAviso.ForeColor = System.Drawing.Color.Green;
                LabelAviso.Visible = true;

            }

            if (Request.QueryString["Sucesso"] == "2")
            {
                LabelAviso.Text = "Promoção alterada com sucesso.";
                LabelAviso.ForeColor = System.Drawing.Color.Green;
                LabelAviso.Visible = true;

            }

            if (Request.QueryString["Sucesso"] == "3")
            {
                LabelAviso.Text = "Promoção ativada com sucesso.";
                LabelAviso.ForeColor = System.Drawing.Color.Green;
                LabelAviso.Visible = true;

            }


            if (Request.QueryString["EditarPromocao"] != null && Session["SessionEditar"]==null)
            {
                LabelAviso.Visible = false;
                int idPromocao = Convert.ToInt32(Request.QueryString["EditarPromocao"]);
                ObjetoPromocao promocao = webServicePromocao.GetPromocao(idPromocao,true);

                labelEditTituloDaPromocao.Visible = true;
                textBoxEditTituloDaPromocao.Visible = true;

                labelEditDescricaoDaPromocao.Visible = true;
                textBoxEditDescricaoDaPromocao.Visible = true;

                labelEditValidadeDaPromocao.Visible = true;
                textBoxEditValidadePromocao.Visible = true;

                ButtonAlterarPromocao.Visible = true;
                ButtonCancelar.Visible = true;

                textBoxEditTituloDaPromocao.Text = promocao.Titulo;
                textBoxEditDescricaoDaPromocao.Text = promocao.Descricao;
                textBoxEditValidadePromocao.Text = promocao.Validade;

                Session["SessionEditar"] = "";


            }

            //labelEditTituloDaPromocao.Visible = false;
            //textBoxEditTituloDaPromocao.Visible = false;

            //labelEditDescricaoDaPromocao.Visible = false;
            //textBoxEditDescricaoDaPromocao.Visible = false;

            //labelEditValidadeDaPromocao.Visible = false;
            //textBoxEditValidadePromocao.Visible = false;

            //ButtonAlterarPromocao.Visible = false;
            //ButtonCancelar.Visible = false;

            listaPromocaoAtivos = webServicePromocao.ListPromocaoByEstabelecimentoId(estabelecimento.EstabelecimentoId, true);

            //if (!Page.IsPostBack)
            //{

            labelTituloDaPromocao.Text = "Título da promoção";
            celulaTituloDaPromocao.Controls.Add(labelTituloDaPromocao);
            linhaDaTabelaPromocaoPorEstabelecimento.Cells.Add(celulaTituloDaPromocao);

            labelDescricaoDaPromocao.Text = "Descrição da promoção";
            celulaDesricaoDaPromocao.Controls.Add(labelDescricaoDaPromocao);
            linhaDaTabelaPromocaoPorEstabelecimento.Cells.Add(celulaDesricaoDaPromocao);

            labelValidadeDaPromocao.Text = "Promoção termina em";
            celulaValidadeDaPromocao.Controls.Add(labelValidadeDaPromocao);
            linhaDaTabelaPromocaoPorEstabelecimento.Cells.Add(celulaValidadeDaPromocao);

            labelStatusPromoção.Text = "Status";
            celulaStatusPromocao.Controls.Add(labelStatusPromoção);
            linhaDaTabelaPromocaoPorEstabelecimento.Cells.Add(celulaStatusPromocao);

            labelAcao.Text = "Ação";
            celulaAcao.Controls.Add(labelAcao);
            linhaDaTabelaPromocaoPorEstabelecimento.Cells.Add(celulaAcao);

            linhaDaTabelaPromocaoPorEstabelecimento.HorizontalAlign = HorizontalAlign.Center;

            TabelaPromocaoDoEstabelecimento.Rows.Add(linhaDaTabelaPromocaoPorEstabelecimento);
            TabelaPromocaoDoEstabelecimento.Visible = false;
            //}

            if (listaPromocaoAtivos.Count() == 0)
            {
                LabelAviso.Text = "Você não possui nenhuma promoção.";
                LabelAviso.ForeColor = System.Drawing.Color.Red;
                LabelAviso.Visible = true;


            }
            else
            {
                // LabelAviso.Visible = false;
                int i = 0;
                foreach (var item in listaPromocaoAtivos)
                {
                    TableRow linhaDaTabelaPromocaoPorEstabelecimento1 = new TableRow();
                    if (i % 2 != 0)
                    {
                        linhaDaTabelaPromocaoPorEstabelecimento1.CssClass = "odd";

                    }

                    i++;

                    TableCell celulaTituloDaPromocao1 = new TableCell();
                    Label labelTituloDaPromocao1 = new Label();

                    TableCell celulaDesricaoDaPromocao1 = new TableCell();
                    Label labelDescricaoDaPromocao1 = new Label();

                    TableCell celulaValidadeDaPromocao1 = new TableCell();
                    Label labelValidadeDaPromocao1 = new Label();

                    TableCell celulaStatusDaPromocao1 = new TableCell();
                    Label labelStatusDaPromocao1 = new Label();

                    TableCell celulaAcao1 = new TableCell();
                    ImageButton imageButtonInativar = new ImageButton();
                    ImageButton imageButtonEditar = new ImageButton();
                    ImageButton imageButtonAtivar = new ImageButton();

                    labelTituloDaPromocao1.Text = item.Titulo;
                    celulaTituloDaPromocao1.Controls.Add(labelTituloDaPromocao1);
                    linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaTituloDaPromocao1);

                    labelDescricaoDaPromocao1.Text = item.Descricao;
                    celulaDesricaoDaPromocao1.Controls.Add(labelDescricaoDaPromocao1);
                    linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaDesricaoDaPromocao1);

                    labelValidadeDaPromocao1.Text = Convert.ToDateTime(item.Validade).ToShortDateString();
                    celulaValidadeDaPromocao1.Controls.Add(labelValidadeDaPromocao1);
                    linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaValidadeDaPromocao1);

                    if (item.Ativa)
                    {

                        labelStatusDaPromocao1.Text = "Ativa";
                        labelStatusDaPromocao1.ForeColor = System.Drawing.Color.Green;
                        celulaStatusDaPromocao1.Controls.Add(labelStatusDaPromocao1);
                        linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaStatusDaPromocao1);
                    }

                    else
                    {
                        labelStatusDaPromocao1.Text = "Inativa";
                        labelStatusDaPromocao1.ForeColor = System.Drawing.Color.Red;
                        celulaStatusDaPromocao1.Controls.Add(labelStatusDaPromocao1);
                        linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaStatusDaPromocao1);

                    }

                    imageButtonInativar.ImageUrl = "../Imagens/IconeInativar.png";
                    
                    
                    imageButtonInativar.PostBackUrl = "EstabelecimentoVerMinhasPromocoes.aspx?InativarPromocao=" + item.Id;
                    imageButtonInativar.ToolTip = "Inativar Promoção.";
                    celulaAcao1.Controls.Add(imageButtonInativar);
                    linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaAcao1);

                    imageButtonEditar.ImageUrl = "../Imagens/IconeEditar.png";
                    imageButtonEditar.PostBackUrl = "EstabelecimentoVerMinhasPromocoes.aspx?EditarPromocao=" + item.Id;
                    imageButtonEditar.ToolTip = "Editar Promoção.";
                    celulaAcao1.Controls.Add(imageButtonEditar);
                    linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaAcao1);
                    

                    TabelaPromocaoDoEstabelecimento.Rows.Add(linhaDaTabelaPromocaoPorEstabelecimento1);
                }

                TabelaPromocaoDoEstabelecimento.Visible = true;
            }

            LabelContador.Text = "Total de promoções ativas: " + listaPromocaoAtivos.Count();
            LabelContador.ForeColor = System.Drawing.Color.Black;
            LabelContador.Visible = true;    

        }



        protected void ButtonAlterarPromocao_Click(object sender, EventArgs e)
        {
            int idPromocao = Convert.ToInt32(Request.QueryString["EditarPromocao"]);
            ObjetoPromocao promocao = webServicePromocao.GetPromocao(idPromocao, true);

            promocao.Titulo = textBoxEditTituloDaPromocao.Text.Trim();
            promocao.Descricao = textBoxEditDescricaoDaPromocao.Text.Trim();
            promocao.Validade = textBoxEditValidadePromocao.Text.Trim();

            ObjetoRetornoPromocao retornoWebServiceAlterarPromocao = webServicePromocao.UpdatePromocao
                (promocao.Id, promocao.EstabelecimentoId, promocao.Titulo, promocao.Descricao, promocao.Validade, null, "", "", true);

            if (retornoWebServiceAlterarPromocao.Sucesso == true)
            {
                Response.Redirect("EstabelecimentoVerMinhasPromocoes.aspx?Sucesso=2");



            }
            else
            {
                LabelAviso.Text = retornoWebServiceAlterarPromocao.Menssagem;
                LabelAviso.ForeColor = System.Drawing.Color.Red;
                LabelAviso.Visible = true;
            }

        }

        protected void ButtonCancelar_Click(object sender, EventArgs e)
        {
            Session["SessionEditar"] = null;
            Response.Redirect("EstabelecimentoVerMinhasPromocoes.aspx");

        }

        protected void CheckBoxInativos_CheckedChanged(object sender, EventArgs e)
        {
            if (CheckBoxInativos.Checked == true)
            {
                LabelAviso.Visible = false;

                listaPromocaoInativa = new BindingList<ObjetoPromocao>(webServicePromocao.ListPromocaoByEstabelecimentoId(estabelecimento.EstabelecimentoId, false));


                if (listaPromocaoInativa.Count == 0)
                {
                    LabelAviso.Text = "Você não possui promoções inativas.";
                    LabelAviso.ForeColor = System.Drawing.Color.Red;
                    LabelAviso.Visible = true;
                }
                else
                {
                    foreach (var item in listaPromocaoInativa)
                    {
                        TableRow linhaDaTabelaPromocaoPorEstabelecimento1 = new TableRow();

                        TableCell celulaTituloDaPromocao1 = new TableCell();
                        Label labelTituloDaPromocao1 = new Label();

                        TableCell celulaDesricaoDaPromocao1 = new TableCell();
                        Label labelDescricaoDaPromocao1 = new Label();

                        TableCell celulaValidadeDaPromocao1 = new TableCell();
                        Label labelValidadeDaPromocao1 = new Label();

                        TableCell celulaStatusDaPromocao1 = new TableCell();
                        Label labelStatusDaPromocao1 = new Label();

                        TableCell celulaAcao1 = new TableCell();

                        ImageButton imageButtonAtivar = new ImageButton();

                        labelTituloDaPromocao1.Text = item.Titulo;
                        celulaTituloDaPromocao1.Controls.Add(labelTituloDaPromocao1);
                        linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaTituloDaPromocao1);

                        labelDescricaoDaPromocao1.Text = item.Descricao;
                        celulaDesricaoDaPromocao1.Controls.Add(labelDescricaoDaPromocao1);
                        linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaDesricaoDaPromocao1);

                        labelValidadeDaPromocao1.Text = Convert.ToDateTime(item.Validade).ToShortDateString();
                        celulaValidadeDaPromocao1.Controls.Add(labelValidadeDaPromocao1);
                        linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaValidadeDaPromocao1);

                        if (item.Ativa)
                        {

                            labelStatusDaPromocao1.Text = "Ativa";
                            labelStatusDaPromocao1.ForeColor = System.Drawing.Color.Green;
                            celulaStatusDaPromocao1.Controls.Add(labelStatusDaPromocao1);
                            linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaStatusDaPromocao1);
                        }

                        else
                        {
                            labelStatusDaPromocao1.Text = "Inativa";
                            labelStatusDaPromocao1.ForeColor = System.Drawing.Color.Red;
                            celulaStatusDaPromocao1.Controls.Add(labelStatusDaPromocao1);
                            linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaStatusDaPromocao1);

                        }

                        imageButtonAtivar.ImageUrl = "../Imagens/IconeAtivar.png";                        
                        imageButtonAtivar.PostBackUrl = "EstabelecimentoVerMinhasPromocoes.aspx?AtivarPromocao=" + item.Id;
                        imageButtonAtivar.ToolTip = "Ativar Promoção.";
                        celulaAcao1.Controls.Add(imageButtonAtivar);
                        linhaDaTabelaPromocaoPorEstabelecimento1.Cells.Add(celulaAcao1);

                        TabelaPromocaoDoEstabelecimento.Rows.Add(linhaDaTabelaPromocaoPorEstabelecimento1);
                        TabelaPromocaoDoEstabelecimento.Visible = true;

                    }

                    LabelContador.Text = "Total de promoções ativas: " + listaPromocaoAtivos.Count() + Environment.NewLine + "Total de promoções inativas :" + listaPromocaoInativa.Count();
                    LabelContador.ForeColor = System.Drawing.Color.Black;
                    LabelContador.Visible = true;
                }
            }
            else
            {
                Response.Redirect("EstabelecimentoVerMinhasPromocoes.aspx");
            }

        }

    }


}